【iOS】カンタン!Firebaseによるイベントトラッキングの始め方
おばんです、このブログをまとめつつワインを飲みながら、最近一人飲みも悪くないと気付きつつある田中です。 でも誰かと一緒に飲んだほうが楽しいので誘ってください。
仙台駅東口に新しくできたBIKiNi TAPA+のスパニッシュオムレツおいしかったです。
さて今回は最近話題のFirebaseによるイベントトラッキングの方法をまとめます
プロジェクトのセットアップ
Firebaseにアクセスしてログインします。
上記画像の「GET STARTED FOR FREE」からプロジェクト立ち上げ用の画面に遷移します。 するとプロジェクト作成用画面に遷移します。
新規プロジェクトの作成を押します。 するとプロジェクト作成用のウィンドウが開きますので、Firebaseプロジェクトの名前を入力し、国を選択します。
これで新たなFirebaseプロジェクトが作成されたので、iOSを選択します。
作成したFirebaseプロジェクトと紐付けるXcodeプロジェクトのBundle Identifierを求められるので入力し、「アプリを追加」ボタンを押します。
次の画面に行くと、Firebaseに必要なInfo.plistが自動的にダウンロードされるので紐付けたXcodeプロジェクトにそのInfo.plistを追加します。 無事に追加されたら「続行」ボタンで次に進みます。
次にFirebaseのPodをインストールします。 画面の指示に従って、Podfileを編集し、pod installします。
初期設定
Podのインストールを完了し、「続行」ボタンを押すとAppDelegateに記述する初期設定の説明画面が出るのですが、FirebaseをimportするとFIRAppが未定義であるとエラーが出てしまうので、FirebaseAnalyticsをimportするようにします。
// AppDelegate.swift import UIKit // サンプルコードでは // import Firebaseだが、 // エラーが出るため // import FirebaseAnalytics import FirebaseAnalytics @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { FIRApp.configure() return true } }
ここまでで設定は終わりです。
イベントトラッキング
次に実際のイベントトラッキングの処理に入ります。
難しいことはなく、任意の箇所でFIRAnalytics.logEventWithName(_:parameters:)
メソッドを呼び出します。
サンプルは以下のコード。
// ViewController.swift import UIKit import FirebaseAnalytics class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } @IBAction func tapButton(sender: AnyObject) { FIRAnalytics.logEventWithName("tappedButton", parameters: nil) } }
上記コードでは「ボタンをタップした」というイベントを送信しています。
FIRAnalytics.logEventWithName(_:parameters:)
メソッドの第一引数となる箇所にイベント名を入力します。
その他付随する情報も送信したい場合はparametersにNSDictionary型のオブジェクトを代入します。
イベントトラッキングの基本はこれだけ!カンタン!
注意点
ダッシュボード
値の反映
送られたイベントのデータの閲覧は、値の反映に若干時間(数時間?)がかかるのですぐに見られない点に注意が必要な模様
初期設定
FIRApp.configure()の"Use of unresolved identifier FIRApp"エラー
原因は不明だが、import Firebase
をimport FirebaseAnalytics
とすると直る。
制約
イベント名に関して
- イベント名はアルファベットで始める
-
イベント名は英数字とアンダースコアの組み合わせで32文字まで
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"(33文字)のイベント名でトラッキングを投げると以下のようなエラーが出ます。
2016-06-26 23:21:32.668 FirebaseTestProject[3385:] <FIRAnalytics/ERROR> Event name is too long. The maximum supported length is 32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- "firebase_"をイベント名の頭につけることはできない
"firebase_ButtonTapped"というイベント名でトラッキングを投げると以下のようなエラーが出ます。
2016-06-26 23:21:32.670 FirebaseTestProject[3385:] <FIRAnalytics/ERROR> Event name uses reserved prefix. Ignoring event: firebase_ButtonTapped
なおFirebase_(頭文字が大文字)は問題ない模様。
- いくつかの予約語があり、送れないイベント名がある
FIREventNames.h
に記載されているイベント名リストは送ることができない
- 大文字と小文字の区別がある
パラメータに関して
- パラメータ名はアルファベットで始める
- パラメータ名は英数字とアンダースコアの組み合わせで24文字まで
- "firebase_"をパラメータ名の頭につけることはできない
- パラメータのvalueはNSStringとNSNumberに対応している
- パラメータのvalueはNSStringの場合は36文字まで
まとめ
直近の案件でFirebaseを使ったイベントトラッキングを実装してみたのですが、思いの外導入が簡単でよかったです。 イベントの命名方法など管理にコツが必要そうですが、良い方法を今後使っていく中で探っていこうと思います。 ここからあまり使われてない機能やボタンについて探っていき、アプリをブラッシュアップしていくのですね。楽しそう、そういうのやっていってみたい。